iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 25
0
Modern Web

ElectronJS系列 第 25

[ Day 25 ] - 分享螢幕(二) - 錄製螢幕訊息

  • 分享至 

  • xImage
  •  

[ Day 25 ] - 錄製螢幕訊息

昨天我們解說了如何取得螢幕目前的狀態 , 那要如何錄製畫面呢 ?

先看成果

我們需要用到 JS 中的 API - mediaRecorder

MediaRecorder 可將 stream 載入 , 利用此物件上的 ondataavailable 方法收集 byteArray

 function startRecord(stream) {

        document.getElementById("listAllSources").style.display = 'none';
        document.getElementById("stopRecord").style.display = 'block';

        let chunks = [];
        window.mediaRecorder = new MediaRecorder(stream);

        const mediaRecorder = window.mediaRecorder;
        mediaRecorder.onstart = () => chunks = [];
        mediaRecorder.ondataavailable = e => chunks.push(e.data);
        mediaRecorder.onstop = () => download(chunks);

        mediaRecorder.start();
    }

然後利用 createObjectURL 將 byteArray 轉換成檔案 test.webm 下載

 function download(recordedChunks) {
        const blob = new Blob(recordedChunks, {type: "video/webm"});
        const url = URL.createObjectURL(blob);
        const a = document.createElement("a");
        document.body.appendChild(a);
        a.style = "display: none";
        a.href = url;
        a.download = "test.webm";
        a.click();
        window.URL.revokeObjectURL(url);
    }

之後我們就可以錄製螢幕了 !

參考資料

今年小弟第一次參加 `鐵人賽` , 如文章有誤 , 請各位前輩提出指正 , 感謝  <(_ _)>

上一篇
[ Day 24 ] - 分享螢幕(一) - 屏幕擷取
下一篇
[ Day 26 ] - 分享螢幕(三) - 分享攝像頭畫面 HTML 版
系列文
ElectronJS38
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言